package NGUYENVANTHANG_kt;
public class CONTROLLERS {

    /***
     * Nghiệp vụ tính diện tích cho các đối tượng hình học
     * @param shOpt
     * + shOpt = 0: Hình tam giác
     * + shOpt = 3: Hình bát giác
     * + shOpt = 2: Hình vuông
     * + shOpt = 1: Hình chữ nhật
     * @param objMetric - Đối tượng hình học (có thể là Tam giác, bát giác,...)
     * @return - Giá trị diện tích của đối tượng hình đó 
     */
	// từ 1 lớp không thể truy cập vào đối tượng của 1 lớp khác mà chỉ có thể tạo ra 1 đối tượng
	// để truy cập vào lớp khác.
	//(trong cùng 1 lớp) các đối tượng thuộc cùng 1 kiểu lớp thì đều có thể thay thế được nhau vì đều  
	// sử dụng được hàm get set. nếu (trường hợp khác lớp thì chỉ có thể thay thế khi đang truyền đối 
    //tượng từ lớp này sang lớp khác) khác kiểu thì mỗi lần thay đổi  đều phải ép kiểu.
	// return = else
	public double getArea(short shOpt, Object objMetric) {
        double results = 0;
        switch (shOpt) {
        /* TH: Hình tam giác */
        case 0: {
            // Tường minh ép kiểu về Object tương ứng
        	//giá trị đã được truyền cho objMetric nhưng muốn sử dụng thì phải ép kiểu 
            TriangleEntity obj = (TriangleEntity) objMetric;
            // float a = (float)2.5;

            // Tính diện tích tam giác
            results = obj.getArea(obj);
        }
            break;
            
	
		
    case 1: {
        // Tường minh ép kiểu về Object tương ứng
    	Hinhchunhat obj = (Hinhchunhat) objMetric;
        // float a = (float)2.5;

        // Tính diện tích hình chữ nhật
        results = obj.getArea(obj);
    }
        break;}
	return results;
    }
    
    
    

        /* TH: Hình */
       
    public double getPerimetter(short shOpt, Object objMetric) {
        double results = 0;
        switch (shOpt) {
        /* TH: Hình chữ nhật */
        case 0: {
            // a. Tường minh ép kiểu về Object tương ứng
            TriangleEntity objEntity = (TriangleEntity) objMetric;

            // b. Tính chu vi cho hình Tam Giác
            results = objEntity.getPerimeter(objEntity);
        }
            break;
            
        case 1: {
            // a. Tường minh ép kiểu về Object tương ứng
        	Hinhchunhat  obj4 = (Hinhchunhat) objMetric;

            // b. Tính chu vi cho hình chữ nhật
            results = obj4.getPerimeter(obj4);
        }
            break;
        }
        return results;
    }

	
       }
        
        
        
        
        
        
        
        
        
   

    /***
     * Nghiệp vụ tính chu vi cho các đối tượng hình học
     * @param shOpt
     * + shOpt = 0: Hình tam giác
     * + shOpt = 1: Hình bát giác
     * + shOpt = 2: Hình vuông
     * + shOpt = n: Hình n
     * @param objMetric - Đối tượng hình học (có thể là Tam giác, bát giác,...)
     * @return - Giá trị chu vi của đối tượng hình đó
     */
   

